package cn.edu.swu.cly.io;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

//manager接受到Main的功能，实现功能任务，调用对应FileUtils
public class ImageManager {
    //哈希图查找迅速，内容唯一。（Map接口的实现类）作为ImageManager的成员变量
    private Map<String,String> imageMap = new HashMap<>();          //key是图片名称，value是图片存储路径

    private static final String ImageDir = "D:\\java\\workspace\\JavaWeb2025\\2_java_io\\images";        //保存图片的文件件的路径

    public ImageManager() {
        FileUtils.ensureDirectoryExists(ImageDir);
    }       //静态方法，直接调用工具类的方法。

    //url下载图片
    public void downloadImage(String url) {
        String fileName = extractFileName(url);
        String savePath = ImageDir + File.separator + fileName;          //拼接路径有问题,添加分隔符(保存目录)

        try {
            FileUtils.saveImage(url, savePath);         //调用saveimage，没抛出异常则成功执行

            imageMap.put(fileName, savePath);           //存入图片名称和路径
            System.out.println("图片下载成功：" + fileName);           //图片本身名称较为复杂，可能会引起查找输入名称的不便
        } catch (IOException e) {
            System.out.println("图片下载失败" + e.getMessage());
        }
    }



    public void listImages() {                      //小问题：当程序关闭之后，再次启动使用查询所有，不能读取之前下载的图片
//        //读取文件夹中的所有图片，赋给image.Map
//        readImageDir(ImageDir,imageMap);

        if (imageMap.isEmpty()) {
            System.out.println("暂无已下载的图片");
            return;
        }
        System.out.println("已下载图片列表：");
        //this.imageMap.forEach((k,v) -> {System.out.println(k + " --- " + v);
        // });
        for (Map.Entry<String, String> entry : imageMap.entrySet()) {
            System.out.println("图片名：" + entry.getKey() + "，本地路径：" + entry.getValue());
        }
    }

    //根据图片信息查找图片
    public String searchImage(String name) {
        if (name == null || name.trim().isEmpty()) {
            System.out.println("图片名称为空");               //图片名称包含了不同的扩展名，具有一定的查找不方便
            return null;
        }
        return imageMap.get(name);      //map中找图片对应路径
    }


    public String extractFileName(String url) {
        if (url == null || url.isEmpty()) {
            throw new IllegalArgumentException("URL不能为空");
        }
        //从URL中提取文件名
        int lastSlashIndex = url.lastIndexOf("/");
        if (lastSlashIndex == -1 || lastSlashIndex == url.length() - 1) {
            //处理没有斜杠或斜杠在末尾的情况
            return "image_" + System.currentTimeMillis();
        }
        return url.substring(lastSlashIndex + 1);
    }

//    public void readImageDir(String Path, Map<String,String> imageMap) {     //1.读取储存图片文件夹下的图片到当前程序的imageMap，2.如果图片重复则跳过。
//        File floder = new File(Path);
//        if (!floder.isDirectory() || !floder.exists()) {        //文件夹存在否？
//            System.out.println("非有效路径，请检查储存图片的Images文件夹地址！");
//            return;
//        }
//
//        //通过检测
//        File[] files = floder.listFiles();              //获取文件夹下所有文件(如果是空文件则返回)
//        if (files == null || files.length == 0) {
//            return;
//        }
//
//        String[] imageExtensions = {".jpg",".gif",".png"};
//
//        //读取所有
//        for (File file : files) {
//            if (file.isFile()) {
//                String FileName = file.getName();
//                String FilePath = file.getAbsolutePath();
//            }
//
//            if (isImageFile(FileName, imageExtensions)) {
//                imageMap.put(FileName,ImageDir);
//            }
//        }
//
//
//
//    }

}
